// Studerende.cpp : Implementation of CStuderende
#include "stdafx.h"
#include "EBASdll.h"
#include "Studerende.h"
#include "Adresse.h"
#include "DatoNotat.h"
#include "EnumDatoNotat.h"

/////////////////////////////////////////////////////////////////////////////
// CStuderende

STDMETHODIMP CStuderende::InterfaceSupportsErrorInfo(REFIID riid)
{
	static const IID* arr[] = 
	{
		&IID_IStuderende
	};
	for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		if (InlineIsEqualGUID(*arr[i],riid))
			return S_OK;
	}
	return S_FALSE;
}

STDMETHODIMP CStuderende::get_Adresser(/*[out,retval]*/ IEnumAdresse ** ppEnumAdresse)
{
	try {
		CComObject<CEnumAdresse> * pEnum = NULL;
		CComObject<CEnumAdresse>::CreateInstance(&pEnum);
		pEnum->set_StudentGuid(m_studImpl->get_GUID());

		pEnum->QueryInterface(ppEnumAdresse);
	} catch (_com_error &e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::SetInfo()
{
	try {
	
		m_studImpl->SetInfo();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Fornavn(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Fornavn();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Fornavn(BSTR newVal)
{
	try {
	
		m_studImpl->put_Fornavn(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Efternavn(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Efternavn();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Efternavn(BSTR newVal)
{
	try {
	
		m_studImpl->put_Efternavn(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Titel(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Titel();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Titel(BSTR newVal)
{
	try {
	
		m_studImpl->put_Titel(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::GetInfo()
{
	return E_NOTIMPL;
}

STDMETHODIMP CStuderende::get_Bemaerkning(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Bemaerkning();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Bemaerkning(BSTR newVal)
{
	try {
	
		m_studImpl->put_Bemaerkning(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Uddannelse(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Uddannelse();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Uddannelse(BSTR newVal)
{
	try {
	
		m_studImpl->put_Uddannelse(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_SkoleId(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_SkoleId();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_SkoleId(BSTR newVal)
{
	try {
	
		m_studImpl->put_SkoleId(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_SkoleDato(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_SkoleDato();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_SkoleDato(BSTR newVal)
{
	try {
	
		m_studImpl->put_SkoleDato(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_OKDato(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_OKDato();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_OKDato(BSTR newVal)
{
	try {
	
		m_studImpl->put_OKDato(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_CPRNr(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_CPRNr();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_CPRNr(BSTR newVal)
{
	try {
	
		m_studImpl->put_CPRNr(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Status(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Status();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Status(BSTR newVal)
{
	try {
	
		m_studImpl->put_Status(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Identifikation(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_Identifikation();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_Identifikation(BSTR newVal)
{
	try {
	
		m_studImpl->put_Identifikation(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_BrugerNavn(BSTR *pVal)
{
	try {
	
		*pVal = m_studImpl->get_BrugerNavn();

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::put_BrugerNavn(BSTR newVal)
{
	try {
	
		m_studImpl->put_BrugerNavn(newVal);

	} catch (_com_error e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::OpretAdresse(IAdresse **pVal)
{
	try {
		CComObject<CAdresse> * pAddr;
		CComObject<CAdresse>::CreateInstance(&pAddr);
		return pAddr->QueryInterface(pVal);
	} catch (_com_error &e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_GUID(BSTR *pVal)
{
	*pVal = m_studImpl->get_GUID().copy();

	return S_OK;
}

STDMETHODIMP CStuderende::put_GUID(BSTR newVal)
{
	m_studImpl->put_GUID(newVal);

	return S_OK;
}

STDMETHODIMP CStuderende::put_Adresse(IAdresse *newVal)
{
	try {
		CComObject<CAdresse> * pAdresse;
		CComObject<CAdresse>::CreateInstance(&pAdresse);
		
		BSTR t;
		newVal->get_AdresseType(&t);
		pAdresse->put_AdresseType(t);
		newVal->get_Attention(&t);
		pAdresse->put_Attention(t);
		newVal->get_Email(&t);
		pAdresse->put_Email(t);
		newVal->get_Gade(&t);
		pAdresse->put_Gade(t);
		newVal->get_Telefax(&t);
		pAdresse->put_Telefax(t);
		newVal->get_Telefon(&t);
		pAdresse->put_Telefon(t);
		newVal->get_PostNummer(&t);
		pAdresse->put_PostNummer(t);

		m_studImpl->put_Adresse(pAdresse);
	} catch (_com_error &e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::OpretDatoNotat(IDatoNotat **ppDatoNotat)
{
	try {
		CComObject<CDatoNotat> * pNotat;
		CComObject<CDatoNotat>::CreateInstance(&pNotat);

		pNotat->put_StuderendeGuid(m_studImpl->get_GUID());		
		pNotat->QueryInterface(ppDatoNotat);
	} catch (_com_error &e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_DatoNotater(IEnumDatoNotat **pVal)
{
	try {
		CComObject<CEnumDatoNotat> * pEnumDatoNotat;
		CComObject<CEnumDatoNotat>::CreateInstance(&pEnumDatoNotat);

		pEnumDatoNotat->set_StudentGuid(m_studImpl->get_GUID());
		pEnumDatoNotat->QueryInterface(pVal);
	} catch (_com_error &e) {
		return e.Error();
	}

	return S_OK;
}

STDMETHODIMP CStuderende::get_Init(BSTR *pVal)
{
	*pVal = m_studImpl->get_Init().copy();

	return S_OK;
}

STDMETHODIMP CStuderende::put_Init(BSTR newVal)
{
	m_studImpl->put_Init(newVal);

	return S_OK;
}

STDMETHODIMP CStuderende::TildelKarakter(IFag *pFag, IKarakter *pKarakter)
{
	return E_NOTIMPL;
}

STDMETHODIMP CStuderende::FjernKarakter(IKarakter *pKarakter)
{
	return E_NOTIMPL;
}
